#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""
PDF处理器模块
用于将PDF文件转换为图像以便进行OCR识别
"""

import os
import tempfile
import fitz  # PyMuPDF

class PDFProcessor:
    def __init__(self):
        pass
    
    def extract_pages_as_images(self, pdf_path, dpi=200):
        """
        将PDF的每一页提取为图像文件
        
        Args:
            pdf_path (str): PDF文件路径
            dpi (int): 图像分辨率，默认200
            
        Returns:
            list: 图像文件路径列表
        """
        # 创建临时目录存储图像
        temp_dir = tempfile.mkdtemp()
        image_paths = []
        
        # 打开PDF文件
        pdf_document = fitz.open(pdf_path)
        
        # 遍历每一页
        for page_num in range(len(pdf_document)):
            # 获取页面
            page = pdf_document[page_num]
            
            # 将页面转换为图像
            mat = fitz.Matrix(dpi/72, dpi/72)  # 默认dpi为72
            pix = page.get_pixmap(matrix=mat)
            
            # 保存图像
            image_path = os.path.join(temp_dir, f"page_{page_num + 1}.png")
            pix.save(image_path)
            image_paths.append(image_path)
            
            # 释放资源
            pix = None
        
        # 关闭PDF文件
        pdf_document.close()
        
        return image_paths
    
    def get_page_count(self, pdf_path):
        """
        获取PDF页数
        
        Args:
            pdf_path (str): PDF文件路径
            
        Returns:
            int: PDF页数
        """
        pdf_document = fitz.open(pdf_path)
        count = len(pdf_document)
        pdf_document.close()
        return count